package com.ruoyi.ai.mongo.pojo;

import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.ai.chat.messages.Message;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

import java.time.LocalDateTime;

/**
 * MongoDB聊天消息文档实体类
 * 用于存储AI聊天的会话记录
 *
 * @author coach tam
 */
@NoArgsConstructor
@Data
@Document(collection = "ai_chat_messages")
public class ChatMessageDocument {

    /**
     * 文档ID，由MongoDB自动生成
     */
    @Id
    private String id;


    @Indexed
    private String userId;

    /**
     * 消息类型
     * 可能的值：user(用户消息)、assistant(助手消息)、system(系统消息)、unknown(未知类型)
     */
    private String messageType;

    /**
     * 消息内容
     */
    private String text;

    /**
     * 记录创建时间，建立索引便于按时间查询
     */
    @Indexed
    private LocalDateTime createdAt;

    /**
     * 将文档对象转换为Message对象
     * @return Spring AI的Message对象
     */
    public Message toMessage() {
        switch (messageType) {
            case "user":
                return new org.springframework.ai.chat.messages.UserMessage(text);
            case "assistant":
                return new org.springframework.ai.chat.messages.AssistantMessage(text);
            case "system":
                return new org.springframework.ai.chat.messages.SystemMessage(text);
            default:
                return new org.springframework.ai.chat.messages.UserMessage(text);
        }
    }
}
